package com.hxh.generater.vue.genBase;

import com.hxh.entity.Project;
import com.hxh.entity.po.ClassInfo;

/**
 * @ProjectName: AICode
 * @Package: com.hxh.generater.vue.genBase
 * @ClassName: GenView
 * @Author: HXH
 * @Description: 生成vue页面代码，不同的模板，必须实现此类
 * @Date: 2024/5/24 11:27
 */
public interface GenVueBase {

    /**
     * 生成单个view，项目文件生成模式
     *
     * 生成单个view时，理论上每个组件应该都抽出一个公共方法，根据不同模板生成对应的代码
     * 但是实际上，每个组件会连带着页面上许多其他代码，无法抽离
     * 如data数据要定义参数，要额外import一些别的组件，要定义一些method等等
     * 他们的耦合性非常高，无法抽离
     *
     * 每次写这一坨代码就很恶心
     *
     * @param project
     * @param classInfo
     * @throws Exception
     */
    void generationView(Project project, ClassInfo classInfo) throws Exception;

    /**
     * 生成单个view，代码生成模式
     *
     * @param classInfo
     * @return
     * @throws Exception
     */
    String generationView(ClassInfo classInfo) throws Exception;

    /**
     * 生成view页面的api请求js文件
     *
     * @param project
     * @param classInfo
     * @throws Exception
     */
    void generationApi(Project project, ClassInfo classInfo) throws Exception;

    /**
     * 生成view页面的api请求js文件
     *
     * @param classInfo
     * @return
     * @throws Exception
     */
    String generationApi(ClassInfo classInfo) throws Exception;

}
